// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLExpr_ptr ;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <string>
#include <list>

#include "../SQLStatementImpl.h"
#include "../SQLReplaceable.h"
#include "SQLDropStatement.h"

class SQLExpr;
class DbType;
class SQLASTVisitor;
class SQLDDLStatement;

class SQLDropUserStatement 
:virtual public SQLStatementImpl ,
virtual public SQLDropStatement,
virtual public SQLReplaceable {
    public:
    SQLExpr_list_ptr  users ;

    BOOL_ptr ifExists;

    SQLDropUserStatement() ;

    SQLDropUserStatement(DbType_ptr   dbType) ;
  SHAREDOBJECT(SQLDropUserStatement);

    BOOL_ptr isIfExists() ;

    void setIfExists(BOOL_ptr ifExists) ;

    SQLExpr_list_ptr getUsers() ;

    void addUser(SQLExpr_ptr user);

    void accept0(SQLASTVisitor_ptr  visitor) ;

    
    SQLExpr_list_ptr  getChildren() ;

    BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

    
    SQLDDLStatement::DDLObjectType getDDLObjectType() ;
};
